<?php
    if (!defined('ZT')) exit;
    
    Usuario::$sesion = new Sesion('Usuario');
    
    if (Usuario::$sesion->indefinida( )) {
        Usuario::$sesion->acceso = array('permisos' => Usuario::NO_AUTENTIFICADO);
    }
    
    
    class Usuario {
        public static $sesion;
        
        const NO_AUTENTIFICADO = 0;
        const AUTENTIFICADO    = 1;
        
        static function logout( )
        {
            self::$sesion->acceso = array('permisos' => self::NO_AUTENTIFICADO);
        }
        
        static function obten($nombre)
        {
            return self::$sesion->acceso[$nombre];
        }
        
        static function pon($nombre, $valor)
        {
            self::$sesion->acceso[$nombre] = $valor;
        }
        
        static function tiene_acceso($tipo_usuario)
        {
            return ($tipo_usuario & self::$sesion->acceso['permisos']) == $tipo_usuario;
        }
        
        static function acceso_restringido($tipo_usuario)
        {
            if (!self::tiene_acceso($tipo_usuario)) {
                throw new Exception('Acceso denegado a usuario');
            }
        }
    }
?>